Technical Q&A

OPS 20 - 固定小数点演算の丸め(1999 年 5 月 17 日)


Q: FixMul (3, 1 << 15) (3*0.5) を呼び出すと、実行結果は 2 になりますが、FixMul (-3, 1 << 15) の実行結果は -1 と評価されます。さらに、68K Mac では、FixMul (-3, 1 << 15) の実行結果は -2 と評価されます。これはどういうことなのですか。

A: この問題は、PowerPC ベースの Macintosh でQuickDraw を正しく動作させるために必要な丸めに関連しています。 固定小数点演算ルーチンは切り上げを行い、負の数の場合はゼロに近い整数になります。このため、-1.5 は -1 に切り上げられ、1.5 は 2 に切り上げられます。

この動作が変更される予定はありません。また、この動作が問題の原因になる場合は、独自の固定小数点ルーチンを書くか、丸めの方向を変えるために Apple の固定小数点ルーチンをラッパーとして使う必要があります。


-- Mark Cookson
Worldwide Developer Technical Support

Technical Q&As | Contents
Previous Question | Next Question

To contact us, please use the Contact Us page.